﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Bastanteo.Negocio;
using Bastanteo.Persistencia.ADO;
using Bastanteo.Domain;

namespace Bastanteo.Negocio
{
    public class RepresentanteBL
    {

        RepresentanteDAO representanteDAO = new RepresentanteDAO(); 

        public  Representante RegistrarRepresentante(String NumDoc, string TipoDoc,
            string Nombre, String Apellidos, int CargoId,
            string ClienteId, int GrupoId) {


                Representante _representante = new Representante();

                if (NumDoc == null || TipoDoc == null || Nombre == null || Apellidos == null ||
                    CargoId <= 0 || ClienteId == null || GrupoId <= 0) {

                        throw new DatosInsuficientesException("Algunos datos están vacíos"); 

                }


                if (representanteDAO.Obtener(NumDoc) != null) {
                    throw new EntidadRepetidaException("Ya existe un representante registrado con el mismo número de documento");
                }

                _representante.RepresentanteNumDoc = NumDoc;
                _representante.RepresentanteTipoDoc = TipoDoc;
                _representante.RepresentanteNombre = Nombre;
                _representante.RepresentanteApellidos = Apellidos;
                _representante.CargoId = CargoId;
                _representante.ClienteId = ClienteId;
                _representante.GrupoId = GrupoId;

               
                return representanteDAO.Crear(_representante);
        }



        public ICollection<Representante> ObtenerTodosRepresentantes() { 
        
            ICollection<Representante> _representantes = null;

            _representantes = representanteDAO.Listar(); 

            return _representantes; 

        }


        public ICollection<Representante> ObtenerRepresentantesPorCliente(string ClienteId)
        {

            ICollection<Representante> _representantes = null;

            if (ClienteId == null)
            {
                throw new DatosInsuficientesException("Tiene que ingresar el Cliente para poder buscar");
            }

            foreach (Representante item in representanteDAO.Listar())
            {
                if (item.ClienteId == ClienteId) {
                    _representantes.Add(item);
                }
            }

            return _representantes;

        }

        public ICollection<Representante> ObtenerRepresentantesPorNombre(string Nombre)
        {

            ICollection<Representante> _representantes = null;

            if (Nombre == null)
            {
                throw new DatosInsuficientesException("Tiene que ingresar el Nombre para poder buscar");
            }

            foreach (Representante item in representanteDAO.Listar())
            {
                if (item.RepresentanteNombre.Contains( Nombre.ToString().Trim()))
                {
                    _representantes.Add(item); 
                } 
            }

            return _representantes;

        }

        public Representante ObtenerRepresentantePorNumeroDocumento(string Dni) {


            if (Dni == null) {
                throw new DatosInsuficientesException("Tiene que ingresar el DNI para poder buscar"); 
            }

            return representanteDAO.Obtener(Dni);

        }



        





    }
}